package tp.tecnicasdisenio.dao;

import java.util.List;

import tp.tecnicasdisenio.model.entity.Alumno;
import tp.tecnicasdisenio.model.entity.Cuatrimestre;
import tp.tecnicasdisenio.model.entity.Materia;

public interface AlumnoDaoInterface extends DaoInterface<Alumno, String>{

	/**
	 * Retorna Alumno con el email indicado. Si no existe ninguno retorna null.
	 * 
	 * @param from
	 */
	public Alumno getPorEmail(String email);

	/**
	 * Indica si existe un alumno con el padron o el email del alumno indicado.
	 * 
	 * @param alumno
	 * @return
	 */
	public boolean existeAlumnoConPadronOEmailDe(Alumno alumno);

	/**
	 * Indica si el alumno esta inscripto en la materia
	 * @param alumno
	 * @param materia
	 * @return
	 */
	public boolean estaInscriptoEnMateria(Alumno alumno, Materia materia, Cuatrimestre cuatrimestre);

	/**
	 * Inscribe un alumno existente en una materia existente
	 * 
	 * @param nuevoAlumno
	 * @param materiaBD
	 */
	public void inscribir(Alumno alumno, Materia materia, Cuatrimestre cuatrimestre);

	/**
	 * Indica si el alumno esta inscripto en la materia
	 * 
	 * @param padron
	 * @param emailMateria
	 * @param cuatrimestreActual
	 * @return
	 */
	public boolean estaInscriptoEnMateria(String padron, String emailMateria, Cuatrimestre cuatrimestre);

	/**
	 * Obtiene una lista con las materias que cursa el alumno en la actualidad 
	 * @param alumno
	 * @return
	 */
	public List<Materia> getMaterias(Alumno alumno);
}
